﻿<?php
/**
 * Classe MAPPER da tabela TB_EMPRESA
 * 
 * @author			Mário R. Castro
 * @copyright		Voitech Sistema
 * @package			SEMAS
 * @subpackage		semas.application.models
 * @version			1.0
*/
class App_Model_EmpresaMapper extends Voitech_Mapper{

    public function __construct(App_Model_Empresa $obEmpresa){
        $this->obModel = $obEmpresa;
    }    
    
    public function buscarPorId() {}
    
    public function carregar(stdClass $obRow) {
        $this->obModel->setCoEmpresa($obRow->co_empresa);
        $this->obModel->setNuCnpj($obRow->nu_cnpj);
        $this->obModel->setNoEmpresa($obRow->no_empresa);
        $this->obModel->setNoEndereco($obRow->no_endereco);
        $this->obModel->setNoComplemento($obRow->no_complemento);
        $this->obModel->setNoBairro($obRow->no_bairro);
        
        $obParamCidade = new App_Model_ParamCidade();
        $obParamCidade->setCoCidade($obRow->co_cidade);
        $obParamCidade->setNoCidade($obRow->no_cidade);
        
        $obParamUf = new App_Model_ParamUf($objRow->sg_uf);
        $obParamCidade->setObParamUf($obParamUf);
        
        $this->obModel->setObParamCidade($obParamCidade);           
        
        $this->obModel->setStStatus($obRow->st_status);
        $this->obModel->setFlagExcluir($obRow->fl_excluir);
        $this->obModel->setDtCadastro($obRow->dt_cadastro);
        return $this;
    }
    
    public function cadastrar() {
        $arCadastrar = $this->retornarArrayPopulado();   
        return App_Model_Db_Empresa::build()->insert($arCadastrar);    
    }
	
    public function alterar() {
        $arCadastrar = $this->retornarArrayPopulado();       
        return App_Model_Db_Empresa::build()->update($arCadastrar,App_Model_Db_Empresa::build()->getAdapter()->quoteInto('co_empresa = ?',$this->obModel->getCoEmpresa()));     
    }

    public function retornarArrayPopulado() {
    	
	$arrCadastrar = array(	'nu_cnpj'=>$this->obModel->getNuCnpj(),
						'no_empresa'=>$this->obModel->getNoEmpresa(),
						'no_endereco_empresa'=>$this->obModel->getNoEndereco(),
						'no_complemento_empresa'=>$this->obModel->getNoComplemento(),
						'no_bairro_empresa'=>$this->obModel->getNoBairro(),
						'co_cidade_empresa'=>$this->obModel->getObCidade()->CoCidade(),
						'sg_uf_empresa'=>$this->obModel->getObParamCidade()->getObParamUf()->getSgUf());
       
        if( $this->obModel->getCoEmpresa() != '' ) {
            $arrCadastrar['co_empresa'] = $this->obModel->getCoEmpresa();
        }
        return $arrCadastrar;
    }

    public function ativar() {
        if($this->obModel->getCoEmpresa() == ''){
            throw new Voitech_Exception('Falta cod. Empresa');
        }
        $arrUpdate = array('st_ativo'=>'S');       
        return App_Model_Db_Empresa::build()->update($arrUpdate,App_Model_Db_Empresa::build()->getAdapter()
                                                                                            ->quoteInto('co_empresa = ?',$this->obModel->getCoEmpresa()));                
    }
    
    public function desativar() {
        if($this->obModel->getCoEmpresa() == ''){
            throw new Voitech_Exception('Falta cod. Empresa');
        }
        $arrUpdate = array('st_ativo'=>'N');
        return App_Model_Db_Empresa::build()->update($arrUpdate
                                                   ,App_Model_Db_Empresa::build()->getAdapter()
                                                                                ->quoteInto('co_empresa = ?',$this->obModel->getCoEmpresa()));                
    }
      
    public function excluir() {
        if($this->obModel->getCoEmpresa() == ''){
            throw new Voitech_Exception('Falta cod. Empresa');
        }
        return App_Model_Db_Empresa::build()->delete(App_Model_Db_Empresa::build()->getAdapter()->quoteInto('co_empresa = ?',$this->obModel->getCoEmpresa()));                
    }
	
}